\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector}{\section{strange.\-extensions.\-injector.\-impl.\-Injector Class Reference}
\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector}\index{strange.\-extensions.\-injector.\-impl.\-Injector@{strange.\-extensions.\-injector.\-impl.\-Injector}}
}


Supplies injection for all mapped dependencies.  


Inheritance diagram for strange.\-extensions.\-injector.\-impl.\-Injector\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
object \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_af2e993fb61630c887d378d36b19bac6f}{Instantiate} (\hyperlink{interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binding}{I\-Injection\-Binding} binding)
\begin{DoxyCompactList}\small\item\em Request an instantiation based on the given binding. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a8e68bee15edd6eae305e1e2a4f24ff6c}{object \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a8e68bee15edd6eae305e1e2a4f24ff6c}{Inject} (object target)}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a8e68bee15edd6eae305e1e2a4f24ff6c}

\begin{DoxyCompactList}\small\item\em Request that the provided target be injected. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_ae6df3d7fb5fc7d18a2ca9c2c8e754783}{object \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_ae6df3d7fb5fc7d18a2ca9c2c8e754783}{Inject} (object target, bool attempt\-Constructor\-Injection)}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_ae6df3d7fb5fc7d18a2ca9c2c8e754783}

\begin{DoxyCompactList}\small\item\em Request that the provided target be injected. \end{DoxyCompactList}\item 
void \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_aadbd3054a566efbcef0fb1cdc3dc3e23}{Uninject} (object target)
\begin{DoxyCompactList}\small\item\em Clear the injections from the provided instance. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Properties}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a3024581ccae080cd97ef911a10bb647c}{\hyperlink{interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector_factory}{I\-Injector\-Factory} {\bfseries factory}\hspace{0.3cm}{\ttfamily  \mbox{[}get, set\mbox{]}}}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a3024581ccae080cd97ef911a10bb647c}

\item 
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_ad39ca1235e74f3ca1b3a32ccc743029c}{\hyperlink{interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binder}{I\-Injection\-Binder} {\bfseries binder}\hspace{0.3cm}{\ttfamily  \mbox{[}get, set\mbox{]}}}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_ad39ca1235e74f3ca1b3a32ccc743029c}

\item 
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a6c22eb7e1a08cd5261882a0aa7ed7b38}{\hyperlink{interfacestrange_1_1extensions_1_1reflector_1_1api_1_1_i_reflection_binder}{I\-Reflection\-Binder} {\bfseries reflector}\hspace{0.3cm}{\ttfamily  \mbox{[}get, set\mbox{]}}}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_a6c22eb7e1a08cd5261882a0aa7ed7b38}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Supplies injection for all mapped dependencies. 

Extension satisfies injection dependencies. Works in conjuntion with (and therefore relies on) the Reflector.

Dependencies may be Constructor injections (all parameters will be satisfied), or setter injections.

Classes utilizing this injector must be marked with the following metatags\-: 
\begin{DoxyItemize}
\item \mbox{[}\hyperlink{class_inject}{Inject}\mbox{]} -\/ Use this metatag on any setter you wish to have supplied by injection. 
\item \mbox{[}\hyperlink{class_construct}{Construct}\mbox{]} -\/ Use this metatag on the specific Constructor you wish to inject into when using Constructor injection. If you omit this tag, the Constructor with the shortest list of dependencies will be selected automatically. 
\item \mbox{[}\hyperlink{class_post_construct}{Post\-Construct}\mbox{]} -\/ Use this metatag on any method(s) you wish to fire directly after dependencies are supplied 
\end{DoxyItemize}

The Injection system is quite loud and specific where dependencies are unmapped, throwing Exceptions to warn you. This is exceptionally useful in ensuring that your app is well structured. 

\subsection{Member Function Documentation}
\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_af2e993fb61630c887d378d36b19bac6f}{\index{strange\-::extensions\-::injector\-::impl\-::\-Injector@{strange\-::extensions\-::injector\-::impl\-::\-Injector}!Instantiate@{Instantiate}}
\index{Instantiate@{Instantiate}!strange::extensions::injector::impl::Injector@{strange\-::extensions\-::injector\-::impl\-::\-Injector}}
\subsubsection[{Instantiate}]{\setlength{\rightskip}{0pt plus 5cm}object strange.\-extensions.\-injector.\-impl.\-Injector.\-Instantiate (
\begin{DoxyParamCaption}
\item[{{\bf I\-Injection\-Binding}}]{binding}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_af2e993fb61630c887d378d36b19bac6f}


Request an instantiation based on the given binding. 

This request is made to the \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector}{Injector}, but it's really the \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_factory}{Injector\-Factory} that does the instantiation. 

Implements \hyperlink{interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector_ab6c185a183b27708e38c4954195fe591}{strange.\-extensions.\-injector.\-api.\-I\-Injector}.

\hypertarget{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_aadbd3054a566efbcef0fb1cdc3dc3e23}{\index{strange\-::extensions\-::injector\-::impl\-::\-Injector@{strange\-::extensions\-::injector\-::impl\-::\-Injector}!Uninject@{Uninject}}
\index{Uninject@{Uninject}!strange::extensions::injector::impl::Injector@{strange\-::extensions\-::injector\-::impl\-::\-Injector}}
\subsubsection[{Uninject}]{\setlength{\rightskip}{0pt plus 5cm}void strange.\-extensions.\-injector.\-impl.\-Injector.\-Uninject (
\begin{DoxyParamCaption}
\item[{object}]{target}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_aadbd3054a566efbcef0fb1cdc3dc3e23}


Clear the injections from the provided instance. 

Note that Uninject can only clean public properties...therefore only setters will be uninjected...not injections provided via constructor injection 

Implements \hyperlink{interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector_a97ed5ca85ac9043a53ae49122a5dc3ca}{strange.\-extensions.\-injector.\-api.\-I\-Injector}.



The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
Strange\-Io\-C/scripts/strange/extensions/injector/impl/Injector.\-cs\end{DoxyCompactItemize}
